﻿
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using DexComanda.Properties;
using DexComanda.Models;

namespace DexComanda
{
    public partial class Main : Form
    {
        private Conexao con;
        private Empresa empresa;

        public Main()
        {
            InitializeComponent();
        }

        private void gruposToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmAdicionarGrupo frm = new frmAdicionarGrupo();
            frm.ShowDialog();
        }

        private void Main_Load(object sender, EventArgs e)
        {
            empresa = AutoConfig.getEmpresa();
            if (empresa.TipoEmpresa == 1)
            {
                clientesToolStripMenuItem.Visible = false;
                entregadoresToolStripMenuItem1.Visible = false;
                financeiroToolStripMenuItem.Visible = false;

            }   
           
            this.txbTelefoneCliente.Focus();
            con = new Conexao();
            PopularGrid("Produto", this.produtosGridView);
            PopularGrid("Pedido", this.pedidosGridView);
            
        }

        private void cadastrarToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            frmClientesDelivery frm = new frmClientesDelivery();
            frm.ShowDialog();
        }

        private void produtosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmCadastrarProduto frm = new frmCadastrarProduto(this);
            frm.ShowDialog();
        }

        public void PopularGrid(string table, DataGridView gridView)
        {
            gridView.DataSource = null;
            gridView.AutoGenerateColumns = true;
            gridView.DataSource = con.SelectAll(table, "spObter" + table);
            gridView.DataMember = table;

            txbTelefoneCliente.Text = Convert.ToString(0); 
            con.Close();
        }

        public void ConsultarCliente(object sender, EventArgs e)
        {
            BuscarCliente();
        }

        private void BuscarCliente()
        {
            string telefone = this.txbTelefoneCliente.Text;
            DBExpertDataSet dbExpert = new DBExpertDataSet();

            DataSet pessoaTelefone = con.SelectPessoaPorTelefone("Pessoa", "spObterPessoaPorTelefone", telefone);

            if ((pessoaTelefone.Tables["Pessoa"].Rows.Count == 0))
            {
                DialogResult resultado = MessageBox.Show("Telefone não encontrado! Deseja cadastrar?", "Aviso", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (resultado == DialogResult.Yes)
                {
                    frmClientesDelivery frm = new frmClientesDelivery();
                    frm.txtTelefone.Text = telefone.ToString();
                    frm.ShowDialog();
                }
            }
            else
            {
                DataSet Pessoa = con.SelectPessoaPorTelefone("Pessoa", "spObterPessoaPorTelefone", telefone);
                DataRow dRow = Pessoa.Tables["Pessoa"].Rows[0];

                this.txtNome.Text = dRow.ItemArray.GetValue(1).ToString();
                this.txtEndereco.Text = dRow.ItemArray.GetValue(2).ToString() + " , " + dRow.ItemArray.GetValue(7).ToString();
                this.txtBairro.Text = dRow.ItemArray.GetValue(4).ToString();
                this.txtCidade.Text = dRow.ItemArray.GetValue(3).ToString();
                this.txtPontoReferencia.Text = dRow.ItemArray.GetValue(5).ToString();


                frmCadastrarPedido CadPedido = new frmCadastrarPedido(0, int.Parse(dRow.ItemArray.GetValue(0).ToString()), "", "", this);
                CadPedido.ShowDialog();

            }
        }

        private void clientesToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmClieForn frmCadClieForn = new frmClieForn();
            frmCadClieForn.ShowDialog();
        }

        private void pedidosGridView_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            int codigo = 0;
            int codigoPessoa = 0;
            string tPara = null;
            string fPagamento = null;
  
            /* Code here */
            if (pedidosGridView.SelectedCells.Count > 0 && e.Button == System.Windows.Forms.MouseButtons.Left)
            {
                codigo = int.Parse(pedidosGridView.SelectedCells[0].Value.ToString());
                codigoPessoa = int.Parse(pedidosGridView.SelectedCells[1].Value.ToString());
                tPara = pedidosGridView.SelectedCells[3].Value.ToString();
                fPagamento = pedidosGridView.SelectedCells[4].Value.ToString();

                frmCadastrarPedido frm = new frmCadastrarPedido(codigo, codigoPessoa, tPara, fPagamento, this);
                frm.ShowDialog();
            }
            else
            {
                this.pedidosGridView.SelectedCells[5].Value = true;
                if (MessageBox.Show("Deseja finalizar este pedido?", "Atenção !!!", MessageBoxButtons.OKCancel) == DialogResult.OK)
                {
                    this.pedidosGridView.SelectedCells[5].Value = true;
                    codigo = int.Parse(pedidosGridView.SelectedCells[0].Value.ToString());
                    con.SinalizarPedidoConcluido("Pedido", "spSinalizarPedidoConcluido", codigo);
                    PopularGrid("Pedido", pedidosGridView);
                   
                }
                else {
                    this.pedidosGridView.SelectedCells[5].Value = false;
                 
                }
                
            }
      
        }

        private void produtosGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }
        private void empresaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmClieForn frm = new frmClieForn();
            frm.Show();
        }

        private void produtoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmCadastrarProduto Form = new frmCadastrarProduto(this);
            Form.Show();
        }

        private void configuraçãoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmConfiguracoes frm = new frmConfiguracoes();
            frm.Show();
        }

        private void grupoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmAdicionarGrupo frm = new frmAdicionarGrupo();
            frm.Show();
        }

        private void produtosGridView_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            Produto produto = null;
            Empresa empresa = AutoConfig.getEmpresa();

            if (produtosGridView.SelectedCells.Count > 0)
            {
                if (empresa.TipoEmpresa == 1)
                {
                    produto = new Produto()
                     {
                         Codigo = int.Parse(produtosGridView.SelectedCells[0].Value.ToString()),
                         //CodBarra = (produtosGridView.SelectedCells[1].Value.ToString()),
                         //Estoque = decimal.Parse(produtosGridView.SelectedCells[2].Value.ToString()),
                         //PrecoCusto = decimal.Parse(produtosGridView.SelectedCells[3].Value.ToString()),
                         //Insumo = bool.Parse(produtosGridView.SelectedCells[4].Value.ToString()),
                         Nome = (produtosGridView.SelectedCells[5].Value.ToString()),
                         Descricao = (produtosGridView.SelectedCells[6].Value.ToString()),
                         PrecoVenda = decimal.Parse(produtosGridView.SelectedCells[7].Value.ToString()),
                         GrupoProduto = (produtosGridView.SelectedCells[8].Value.ToString())
                     };
                }
                else if(empresa.TipoEmpresa == 2){
                    produto = new Produto()
                    {
                        Codigo = int.Parse(produtosGridView.SelectedCells[0].Value.ToString()),
                        CodBarra = (produtosGridView.SelectedCells[1].Value.ToString()),
                        Estoque = decimal.Parse(produtosGridView.SelectedCells[2].Value.ToString()),
                        PrecoCusto = decimal.Parse(produtosGridView.SelectedCells[3].Value.ToString()),
                        Insumo = bool.Parse(produtosGridView.SelectedCells[4].Value.ToString()),
                        Nome = (produtosGridView.SelectedCells[5].Value.ToString()),
                        Descricao = (produtosGridView.SelectedCells[6].Value.ToString()),
                        PrecoVenda = decimal.Parse(produtosGridView.SelectedCells[7].Value.ToString()),
                        GrupoProduto = (produtosGridView.SelectedCells[8].Value.ToString())
                    };
                    
                }
                frmCadastrarProduto frm = new frmCadastrarProduto(produto, this);
                frm.StartPosition = FormStartPosition.CenterParent;
                frm.Show();
            }
        }

        private void pedidosGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void txbTelefoneCliente_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                BuscarCliente();
            }
        }

        private void usuariosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            
        }

        private void cadastrarToolStripMenuItem1_Click_1(object sender, EventArgs e)
        {
            frmUsuario frm = new frmUsuario();
            frm.Show();
        }

    }
}



